在 Docker 环境下安装 Lsky Pro 图床

您所在的位置:网站首页 Lsky Pro图床破解版 在 Docker 环境下安装 Lsky Pro 图床

在 Docker 环境下安装 Lsky Pro 图床

2024-07-17 07:52:45| 来源: 网络整理| 查看: 265

常用的图床程序 Lsky Pro 最近更新了2.0版本。这个版本换用新的底层以支持多种数据库,带来全新的更加美观的瀑布流样式和图片管理页面,新增了水印配置、原图保护,等等。但最叫人欣喜的还是新增的多种逻辑形式的角色组和策略组。

在2.0版本之前,一种存储方式只能存在一个。举个简单的栗子:使用腾讯云COS的话,只能存在一个帐号的一个存储桶。而现在不仅可以设置多个帐号,还支持将这些存储策略分配给多个用户。这对于非个人用户来说,是个极佳的升级理由。不过由于我改用 Docker,更新的迁移过程有些坎坷,好在一一解决了。

使用 docker compose 安装

现在,有大佬为 lskypro 编写了 docker 镜像,所以我们可以直接用 docker compose 一把梭:

version: '3.4' services: lskypro: image: halcyonazure/lsky-pro-docker:latest container_name: lskypro ports: - 9080:80 volumes: - ./lskypro:/var/www/html restart: unless-stopped

之后,再用 nginx 反向代理,举个简单的例子:

server { listen 80 ; listen 443 ssl http2 ; server_name himiku.com; index index.html index.php; include addssl/himiku.com.conf; location / { proxy_pass http://lskypro:80; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; } access_log /var/log/nginx/himiku.com.log; }环境处理

相比1.x版本,这次的安装要求增添了不少。需要满足以下条件:

PHP >= 8.0.2安装BCMath、Ctype、DOM、Fileinfo、JSON、Mbstring、OpenSSL、PDO、Tokenizer PHP、XML PHP、Imagick 拓展解禁exec、shell_exec、readlink、symlink、putenv、getenv函数

函数还好说,在php.ini里删除一下就好。但扩展就头疼了,没有在一开始把这些扩展编译进 PHP 的话,后续一个个塞很麻烦。还好我用的是Docker,可以一把梭。

PHP 部分安装所需拓展

我的 PHP7 用到的Dockerfile如下:

FROM php:7.4.27-fpm-alpine RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories \ && apk update \ && apk add --virtual .build-tools --no-cache autoconf gcc g++ make \ && apk --no-cache add ffmpeg graphicsmagick zip zlib-dev libjpeg-turbo-dev libpng-dev freetype-dev imagemagick-dev imagemagick libzip-dev icu-dev \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install gd \ && docker-php-ext-install exif mysqli pdo_mysql zip bcmath intl pcntl \ && pecl install redis imagick \ && docker-php-ext-enable redis imagick \ && apk del .build-tools \ && curl -sS https://getcomposer.org/installer | php \ && mv composer.phar /usr/local/bin/composer \ && apk add --no-cache git

这里有个小插曲。在初次测试的时候,上传图片程序一直在报错:

Unable to read image from path

我一直怀疑是程序权限的原因,反复检查了好几次没法解决。正当灰心的时候,注意到控制台的报错与imagick有关,最后在GitHub Issue上找到了解决方法。是因为imagemagick扩展没有安装相应图片格式支持所导致的。

原先是这样的,少安了个imagemagick

apk --no-cache add ffmpeg graphicsmagick zip zlib-dev libjpeg-turbo-dev libpng-dev freetype-dev imagemagick-dev libzip-dev icu-dev

故可以再加确认,是否成功安装了imagick扩展:

docker exec php php --ri imagick

若输出以下内容,则表示成功安装了支持解析所有图片格式的imagick。

imagick imagick module => enabled imagick module version => 3.7.0 imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel Imagick compiled with ImageMagick version => ImageMagick 7.1.0-16 Q16-HDRI x86_64 2021-11-21 https://imagemagick.org Imagick using ImageMagick library version => ImageMagick 7.1.0-16 Q16-HDRI x86_64 2021-11-21 https://imagemagick.org ImageMagick copyright => (C) 1999-2021 ImageMagick Studio LLC ImageMagick release date => 2021-11-21 ImageMagick number of supported formats: => 246 ImageMagick supported formats => 3FR, 3G2, 3GP, AAI, AI, APNG, ART, ARW, ASHLAR, AVI, AVIF, AVS, BGR, BGRA, BGRO, BMP, BMP2, BMP3, BRF, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CR3, CRW, CUBE, CUR, CUT, DATA, DCM, DCR, DCRAW, DCX, DDS, DFONT, DNG, DOT, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, FARBFELD, FAX, FF, FILE, FITS, FL32, FLV, FRACTAL, FTP, FTS, G3, G4, GIF, GIF87, GRADIENT, GRAY, GRAYA, GROUP4, GV, HALD, HDR, HEIC, HEIF, HISTOGRAM, HRZ, HTM, HTML, HTTP, HTTPS, ICB, ICO, ICON, IIQ, INFO, INLINE, IPL, ISOBRL, ISOBRL6, JNG, JNX, JPE, JPEG, JPG, JPS, JSON, K25, KDC, KERNEL, LABEL, M2V, M4V, MAC, MAP, MASK, MAT, MATTE, MEF, MIFF, MKV, MNG, MONO, MOV, MP4, MPC, MPEG, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NRW, NULL, ORA, ORF, OTB, OTF, PAL, PALM, PAM, PANGO, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PHM, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, POCKETMOD, PPM, PS, PS2, PS3, PSB, PSD, PTIF, PWP, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGB565, RGBA, RGBO, RGF, RLA, RLE, RMF, RSVG, RW2, SCR, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TM2, TTC, TTF, TXT, UBRL, UBRL6, UIL, UYVY, VDA, VICAR, VID, VIFF, VIPS, VST, WBMP, WEBM, WEBP, WMV, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, YAML, YCbCr, YCbCrA, YUV Directive => Local Value => Master Value imagick.locale_fix => 0 => 0 imagick.skip_version_check => 0 => 0 imagick.progress_monitor => 0 => 0 imagick.set_single_thread => 1 => 1 imagick.shutdown_sleep_count => 10 => 10 imagick.allow_zero_dimension_images => 0 => 0

多版本PHP

因为 Tyeocho 对 PHP8 的支持仍在测试环节,而 VOID 还不支持 PHP8 。故我主要使用的还是 PHP7。但为了能用上Lsky Pro 2.0,需要添加一个 PHP8。

新建一个文件夹,重命名为php8,丢一个Dockerfile进去。其实内容与上一节的PHP7 只有版本号上的不同:

FROM php:8.1.3-fpm-alpine RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories \ && apk update \ && apk add --virtual .build-tools --no-cache autoconf gcc g++ make \ && apk --no-cache add ffmpeg graphicsmagick zip zlib-dev libjpeg-turbo-dev libpng-dev freetype-dev imagemagick-dev imagemagick libzip-dev icu-dev \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install gd \ && docker-php-ext-install exif mysqli pdo_mysql zip bcmath intl pcntl \ && pecl install redis imagick \ && docker-php-ext-enable redis imagick \ && apk del .build-tools \ && curl -sS https://getcomposer.org/installer | php \ && mv composer.phar /usr/local/bin/composer \ && apk add --no-cache git

接着,在docker-compose.yml里加一项php8,随后部署起来即可。

php: build: ./php volumes: - ./www:/home/wwwroot - ./php/php.ini:/usr/local/etc/php/php.ini environment: - TZ=Asia/Shanghai user: 101:101 restart: unless-stopped container_name: php php8: build: ./php8 volumes: - ./www:/home/wwwroot - ./php8/php.ini:/usr/local/etc/php/php.ini environment: - TZ=Asia/Shanghai user: 101:101 restart: unless-stopped container_name: php8Nginx 部分

程序的 Nginx 配置,除了需要按照官方文档使用伪静态,还需要注释掉 Nginx 自身对图片的缓存才能启用原图保护。

不过,我的 Nginx 环境用的还是LNMP脚本中的配置,和直接从官方 Nginx 拉的配置不太一样。但思路是一致的,如:

server { listen 80 ; listen 443 ssl http2 ; server_name xxx.com; 这里是证书; index index.html index.php ; root /home/wwwroot/lsky/public; …… # 伪静态 location / { try_files $uri $uri/ /index.php?$query_string; } # 需要注释掉的东西 # location ~ .*\.(gif|webp|jpg|jpeg|png|bmp|swf)$ { # expires 30d; # } …… # 使用php8 location ~ [^/]\.php(/|$) { try_files $uri =404; fastcgi_pass php8:9000; fastcgi_index index.php; include fastcgi.conf; } …… }

建议先测试完毕再上线生产环境。

安装 Lsky Pro 2.0

程序的安装就十分简单了。直接从官方 GitHub Releases 页面下载压缩包,解压到服务器上设置好权限就行。一开始会自检一遍,提示缺失的模块或未启用的函数。如果无法满足条件,是不能进行下一步的。

如果是新用户,那么建议选择SQlite。老用户肯定没得选,为了能用上数据转移脚本,需要选择MySQL。

只要数据库配置没写错,很快就能搞定。

老用户需要在这一步停下,以进行数据库迁移。

根据官方文档,下载好迁移脚本后,Docker下的部分命令是不一样的。

例如,我将脚本解压至映射的www文件夹,需要根据docker-compose.yml中设置的映射路径,写完整这个脚本具体的位置。

docker exec php8 php /home/wwwroot/migrate/start.php migrate

这其实官方文档中「使用 ssh 工具登录到服务器,cd 到脚本根目录(与 start.php 文件同级)然后执行迁移命令 php start.php migrate」的步骤,但我忘了我用的是 Docker,反复复制粘贴了好几遍。

如果 config.yaml 配置文件填写无误,会出现如下的转移进度。

数据库转换成功之后,就能继续设置图床了。

主界面是这样的。

而图库是这样的。

存储策略的话,不在本文介绍范围内。写了就离题了。

就先到这里了。

参考官方文档:https://docs.lsky.pro/

本文作者:mikusa

本文链接:https://www.himiku.com/archives/docker-with-lsky-pro.html

封面出处:0823 / Carota侵略 #Pixiv

版权声明:所有文章除特别声明外均系本人自主创作,转载及引用请联系作者,并注明出处(作者、原文链接等)。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


    图片新闻

    实验室药品柜的特性有哪些
    实验室药品柜是实验室家具的重要组成部分之一,主要
    小学科学实验中有哪些教学
    计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
    实验室各种仪器原理动图讲
    1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
    高中化学常见仪器及实验装
    1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
    微生物操作主要设备和器具
    今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
    浅谈通风柜使用基本常识
     众所周知,通风柜功能中最主要的就是排气功能。在

    专题文章

      CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭